package Classic150;

import java.util.HashMap;
import java.util.Map;

public class 同构字符串 {
    public boolean isIsomorphic(String s, String t) {
        /*
            字符串函数的巧用
            字符串中，同一个位置的字符在本串中第一次出现的位置相同。我简单解释一下，本题判定为false有这些个情况，我们假设拿s串和t串作对比
            1.s串中相同的字符，对应的t串中的字符并不相等
            2.s串中不同的字符，对应的t串中的字符却是相等的
            所以判断的关键点就是相同的字符要对应相同的字符，那么相同字符处于后位置的字符的第一次出现的位置就应该相同。
            所以我们在判断时，只需要判断两个字符串同位置的字符是否相同即可。
         */
        for (int i = 0; i < s.length(); i++) {
            char sc = s.charAt(i);
            char tc = t.charAt(i);
            if(s.indexOf(sc) != t.indexOf(tc)) return false;
        }
        return true;

        /*
            常规哈希表思路
         */
        /*Map<Character, Character> mapping1 = new HashMap<>();
        Map<Character, Character> mapping2 = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            char x = s.charAt(i);
            char y = t.charAt(i);
            if (mapping1.containsKey(x) && mapping1.get(x) != y) return false;
            if (mapping2.containsKey(y) && mapping2.get(y) != x) return false;
            mapping1.put(x, y);
            mapping2.put(y, x);
        }
        return true;*/
    }
}
